The present invention relates to memory management techniques, and more specifically, to a garbage collector that is implemented in hardware.
Frequency scaling, which is the technique of ramping processor frequency to achieve enhance performance, has led to other approaches for enhancing computing performance. One example of another approach for enhancing performance is multiple instruction, multiple data (MIMD) parallelism employing multiple processors. However, MIMD parallelism may be relatively inefficient, and consumes a relatively high amount of power. One alternative to MIMD parallelism is reconfigurable hardware such as, for example, field-programmable gate arrays (FPGA).
One drawback of FPGAs is programming methodology. The most common computer languages for FPGAs are relatively low-level hardware description languages such as, for example, very-high-speed integrated circuits hardware description language (VHDL) and Verilog. These low-level languages use abstractions that are bits, arrays of bits, registers, wires, and other hardware, which make programming FPGAs much more complex than conventional central processing units (CPUs). Thus, there is a focus on raising the level of abstraction and programmability of FPGAs to that of higher-level software based programming languages. Some examples of recent research are the Kiwi project, which automatically translates C# programs into FPGA circuits, or the Liquid Metal project that has developed the Lime language. One fundamental feature of high-level languages is automatic memory management, in the form of garbage collection (i.e., attempts to reclaim memory occupied by objects that are no longer in use by a program). However, whether a low-level language or a higher-level programming language is used, the use of garbage collection in FPGAs and other types of reconfigurable hardware structures is generally non-existent.